//
//  IDataModel.m
//  Zhidao
//
//  Created by liangqiaozhong on 12-12-13.
//  Copyright (c) 2012年 Baidu.com. All rights reserved.
//

#import "IDataModel.h"
#import "FrameworkRelativeDefines.h"
//#import "NSString+NSString_Ex_.h"
//#import "DownloadTaskSceneAreaOffline.h"
//#import "AlbumDBOperator.h"

//@implementation PackageInfo
//
//@synthesize isNewest = _isNewest;
//@synthesize isPackageExist = _isPackageExist;
//@synthesize packageUrl = _packageUrl;
//@synthesize packageSize = _packageSize;
//
//- (id)copyWithZone:(NSZone *)zone
//{
//    PackageInfo* copy = [[[self class] alloc] init];
//    
//    copy.isNewest = self.isNewest;
//    copy.isPackageExist = self.isPackageExist;
//    copy.packageUrl = [self.packageUrl autorelease];
//    copy.packageSize = self.packageSize;
//    
//    return copy;
//}
//
//- (id)mutableCopyWithZone:(NSZone *)zone
//{
//    PackageInfo* copy = [[[self class] alloc] init];
//    
//    copy.isNewest = self.isNewest;
//    copy.isPackageExist = self.isPackageExist;
//    copy.packageUrl = [self.packageUrl autorelease];
//    copy.packageSize = self.packageSize;
//    
//    return copy;
//}
//
//- (void)buildSimulationData
//{
//    self.isNewest = YES;
//    self.isPackageExist = NO;
//    self.packageUrl = @"";
//    self.packageSize = 0;
//}
//
//+ (id)parseDataFromJSON:(NSDictionary *)data
//{
//    // 输入参数判断
//    if ( nil == data )
//        return nil;
//    
//    // 分配数据模型对象内存
//    PackageInfo *retObject = nil;
//    retObject = [[PackageInfo alloc] init];
//    if ( nil == retObject )
//        return retObject;
//    
//#ifdef USE_SIMULATION_DATA
//    // 构造模拟数据
//    [self buildSimulationData:retObject];
//    return [retObject autorelease];
//#endif
//    
//    data = [data dictionaryValueForKey:@"data" defaultValue:data];
//    
//    retObject.isNewest = [data boolValueForKey:@"is_newest"
//                                  defaultValue:YES];
//    retObject.isPackageExist = [data boolValueForKey:@"package_exist"
//                                        defaultValue:NO];
//    retObject.packageSize = [data longLongValueForKey:@"package_size"
//                                         defaultValue:0];
//    retObject.packageUrl = [data stringValueForKey:@"url"
//                                      defaultValue:@""
//                                         operation:NSStringOperationTypeTrim];
//    
//    // 返回结果数据模型
//    return [retObject autorelease];
//}
//
//- (void)dealloc
//{
//    self.packageUrl = nil;
//    
//    [super dealloc];
//}
//
//@end
//
//@implementation LVSceneBaseInfo
//
//@synthesize sid = _sid;
//@synthesize parentSid = _parentSid;
//@synthesize scenePath = _scenePath;
//@synthesize sceneName = _sceneName;
//@synthesize addressDetails = _addressDetails;
//@synthesize sceneBriefInformation = _sceneBriefInformation;
//@synthesize strVersion = _strVersion;
//@synthesize map_x = _map_x;
//@synthesize map_y = _map_y;
//@synthesize pic_url = _pic_url;
//@synthesize packageInfo = _packageInfo;
//@synthesize ticketPrice = _ticketPrice;
//@synthesize openingTime = _openingTime;
//@synthesize sceneLayer = _sceneLayer;
//@synthesize level = _level;
//@synthesize isOffline = _isOffline;
//@synthesize useParentSid = _useParentSid;
//@synthesize phone = _phone;
//@synthesize bestVisitTime = _bestVisitTime;
//@synthesize recommendVisitTime = _recommendVisitTime;
//@synthesize abstract = _abstract;
//@synthesize desc = _desc;
//@synthesize offlineParentSid = _offlineParentSid;
//@synthesize isChina = _isChina;
//@synthesize userInfo = _userInfo;
//
//- (id)copyWithZone:(NSZone *)zone
//{
//    LVSceneBaseInfo* copy = [[[self class] alloc] init];
//    
//    copy.sid = [self.sid autorelease];
//    copy.parentSid = [self.parentSid autorelease];
//    copy.scenePath = [self.scenePath autorelease];
//    copy.sceneName = [self.sceneName autorelease];
//    copy.addressDetails = [self.addressDetails autorelease];
//    copy.sceneBriefInformation = [self.sceneBriefInformation autorelease];
//    copy.strVersion = [self.strVersion autorelease];
//    copy.map_x = [self.map_x autorelease];
//    copy.map_y = [self.map_y autorelease];
//    copy.pic_url = [self.pic_url autorelease];
//    copy.packageInfo = [[self.packageInfo copy] autorelease];
//    copy.ticketPrice = [self.ticketPrice autorelease];
//    copy.openingTime = [self.openingTime autorelease];
//    copy.sceneLayer = self.sceneLayer;
//    copy.level = [self.level autorelease];
//    copy.isOffline = self.isOffline;
//    copy.useParentSid = self.useParentSid;
//    copy.phone = [self.phone autorelease];
//    copy.bestVisitTime = [self.bestVisitTime autorelease];
//    copy.recommendVisitTime = [self.recommendVisitTime autorelease];
//    copy.abstract = [self.abstract autorelease];
//    copy.desc = [self.desc autorelease];
//    copy.offlineParentSid = [self.offlineParentSid autorelease];
//    copy.isChina = self.isChina;
//    copy.userInfo = [[self.userInfo copy] autorelease];
//    
//    return copy;
//}
//
//- (id)mutableCopyWithZone:(NSZone *)zone
//{
//    LVSceneBaseInfo* copy = [[[self class] alloc] init];
//    
//    copy.sid = [self.sid autorelease];
//    copy.parentSid = [self.parentSid autorelease];
//    copy.scenePath = [self.scenePath autorelease];
//    copy.sceneName = [self.sceneName autorelease];
//    copy.addressDetails = [self.addressDetails autorelease];
//    copy.sceneBriefInformation = [self.sceneBriefInformation autorelease];
//    copy.strVersion = [self.strVersion autorelease];
//    copy.map_x = [self.map_x autorelease];
//    copy.map_y = [self.map_y autorelease];
//    copy.pic_url = [self.pic_url autorelease];
//    copy.packageInfo = [[self.packageInfo copy] autorelease];
//    copy.ticketPrice = [self.ticketPrice autorelease];
//    copy.openingTime = [self.openingTime autorelease];
//    copy.sceneLayer = self.sceneLayer;
//    copy.level = [self.level autorelease];
//    copy.isOffline = self.isOffline;
//    copy.useParentSid = self.useParentSid;
//    copy.phone = [self.phone autorelease];
//    copy.bestVisitTime = [self.bestVisitTime autorelease];
//    copy.recommendVisitTime = [self.recommendVisitTime autorelease];
//    copy.abstract = [self.abstract autorelease];
//    copy.desc = [self.desc autorelease];
//    copy.offlineParentSid = [self.offlineParentSid autorelease];
//    copy.isChina = self.isChina;
//    copy.userInfo = [[self.userInfo copy] autorelease];
//    
//    return copy;
//}
//
//- (id)init
//{
//    self = [super init];
//    
//    _packageInfo = [[PackageInfo alloc] init];
//    _sceneLayer = SceneLayerType_None;
//    _useParentSid = YES;
//    
//    return self;
//}
//
//- (void)buildSimulationData
//{
//    self.sid = @"95fa60adbc2c735691f281f8";
//    self.parentSid = @"060c23d1dc24b39f0973b9f0";
//    self.sceneName = @"世界之窗";
//    self.addressDetails = @"深圳市 世界之窗深圳市世界之窗深圳市世界之窗深圳市世界之窗深圳市世界之窗深圳市世界之窗深圳市世界之窗深圳市世界之窗深圳市世界之窗深圳市世界之窗深圳市世界之窗深圳市世界之窗159600361401596003614015960036140159600361401596003614015960036140159600361401596003614015960036140159600361401596003614015960036140159600361401596003614015960036140endendendend话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发end##.";
//    self.sceneBriefInformation = @"世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界#over 200 dfdsfd世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界之世界之窗简介：世界#over 200 dfdsfd";
//    self.map_x = @"113.98132";
//    self.map_y = @"22.542315";
//    self.pic_url = @"060c23d1dc24b39f0973b9f0/pic/b5ce9254bf48a4473b29355b.jpg";
//    self.openingTime = @"开放时间：6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%6:00-18:00 第三方的手机号放假的话时间发货@##%#%#%#%439594358437584759847end";
//    self.ticketPrice = @"门票：旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS旺季（40元）、淡季（20元）XXXKKDSFDFDSFDSFDSFDS4389673469783476099090000end";
//    [self.packageInfo buildSimulationData];
//}
//
//- (void)autoSetParentSid
//{
//    _useParentSid = YES;
//    
//    //这里进行所有stype scene_layer parentSid转换
//    //规则，老的版本只有stype，没有scene_layer
//    //1.是否存在scene_layer
//    if (SceneLayerType_None == _sceneLayer)
//    {
//        //不存在scene_layer，则说明是老版本v1（离线、线上）
//        _sceneLayer = SceneLayerType_Scene;
//    }
//    else
//    {
//        //存在scene_layer
//    }
//    
//    //1.city 2.sceneArea
//    if (SceneLayerType_City >= _sceneLayer)
//    {
//        _useParentSid = NO;
//    }
//    else if(SceneLayerType_SceneArea == _sceneLayer)
//    {
//        //景区，极有可能存在上级城市目录，需要进行搜索
//        
//        //先搜索景区
//        NSString* offlinePath = [DownloadTaskSceneAreaOffline destStoragePath:_sid];
//        
//        offlinePath = [offlinePath stringByAppendingPathComponent:_sid];
//        offlinePath = [offlinePath stringByAppendingPathComponent:@"index"];
//        
//        if ([[NSFileManager defaultManager] fileExistsAtPath:offlinePath])
//        {
//            //已经下载了景区了
//            _useParentSid = NO;
//        }
//        else
//        {
//            //搜索城市下面的景区,（本期，不搜索了）
//            _useParentSid = NO;
//        }
//    }
//    else if (SceneLayerType_Scene == _sceneLayer)
//    {
//        //景点，极有可能存在上级城市目录，需要进行搜索
//        //先搜索上级城市
//        NSString* offlinePath = [DownloadTaskSceneAreaOffline destStoragePath:_parentSid];
//        
//        offlinePath = [offlinePath stringByAppendingPathComponent:_parentSid];
//        offlinePath = [offlinePath stringByAppendingPathComponent:_sid];
//        offlinePath = [offlinePath stringByAppendingPathComponent:@"index"];
//        
//        if ([[NSFileManager defaultManager] fileExistsAtPath:offlinePath])
//        {
//            //已经下载了上级的城市
//            _useParentSid = YES;
//        }
//        else
//        {
//            //搜索旧景点
//            _useParentSid = NO;
//        }
//    }
//    
//    if (_useParentSid)
//    {
//        self.offlineParentSid = _parentSid;
//    }
//    else
//    {
//        self.offlineParentSid = _sid;
//    }
//}
//
//- (void)setSceneLayer:(LVSceneLayerType)sceneLayer
//{
//    _sceneLayer = sceneLayer;
//    
//    [self autoSetParentSid];
//}
//
//- (void)dealloc
//{
//    self.sid = nil;
//    self.parentSid = nil;
//    self.scenePath = nil;
//    self.sceneName = nil;
//    self.addressDetails = nil;
//    self.sceneBriefInformation = nil;
//    self.map_x = nil;
//    self.map_y = nil;
//    self.pic_url = nil;
//    self.openingTime = nil;
//    self.packageInfo = nil;
//    self.strVersion = nil;
//    self.level = nil;
//    self.phone = nil;
//    self.bestVisitTime = nil;
//    self.recommendVisitTime = nil;
//    self.abstract = nil;
//    self.desc = nil;
//    self.offlineParentSid = nil;
//    self.userInfo = nil;
//    
//    [super dealloc];
//}
//
//@end


@implementation ServerError

@synthesize errorMsg = _errorMsg;
@synthesize errorType = _errorType;

- (id) initWithDic:(NSDictionary *)dic
{
    self = [super init];
    if (self) {
        self.errorMsg = [dic objectForKey:@"msg"];
        self.errorType = [[dic objectForKey:@"errno"] intValue];
    }
    return self;
    
}
- (void) dealloc
{
    [_errorMsg release];
    [super dealloc];
}

@end



@implementation IDataModel

@synthesize isDataFromOfflinePackage=_isDataFromOfflinePackage;
@synthesize jsonValue               =_jsonValue;
@synthesize dbKey                   =_dbKey;
@synthesize isDataFromDB            =_isDataFromDB;
@synthesize userInfo                = _userInfo;
@synthesize errorNO                 = _errorNO;
@synthesize errorMsg                = _errorMsg;
@synthesize err                     = _err;

// 将JSON数据解析为数据模型,此处为空实现，需要具体的IDataModel子类重载实现
-(id) parseDataFromJSON:(NSDictionary*)data
{
    return [[self class] parseDataFromJSON:data];
}

+ (id)parseDataFromJSON:(NSDictionary *)data
{
    return nil;
}

- (void) parseErrorCode:(NSDictionary *)data
{
    self.errorMsg= [data stringValueForKey:@"msg" defaultValue:@"" operation:NSStringOperationTypeNone];
    self.errorNO = [data intValueForKey:@"errno" defaultValue:0];
    
}

- (void)buildSimulationData
{
    
}


//-(void) saveInDB
//{
//#pragma mark  需要异步操作
//    [[AlbumDBOperator sharedInstance] saveJson:self.jsonValue withKey:self.dbKey];
//}

-(void) dealloc
{
    self.errorMsg = nil;
    self.dbKey = nil;
    self.jsonValue = nil;
    self.userInfo = nil;
    [super dealloc];
}
@end
